package org.lemon.cla.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.lemon.cla.pojo.Club;
import org.lemon.cla.vo.ClubVo; // 导入 ClubVo
import org.lemon.cla.dto.request.ClubSearchRequest;
import org.lemon.cla.enums.ClubStatusEnum;

public interface IClubService extends IService<Club> {
    // ... 你的其他 Service 方法 ...

    Club getClubByClubName(String clubName); // 保持这个用于唯一性校验

    /**
     * 根据社团ID更新社团状态。
     * @param clubId 社团ID
     * @param newStatusStr 新的状态字符串
     * @return true 如果更新成功，false 如果社团不存在或状态值无效
     */
    boolean updateClubStatus(Long clubId, String newStatusStr);

    /**
     * 根据社团ID获取社团详情，包含创建人信息。
     * @param clubId 社团ID
     * @return 社团视图对象 (如果社团不存在或创建人逻辑删除则信息会特殊处理)
     */
    ClubVo getClubVoById(Long clubId);

    /**
     * 分页获取所有社团，包含创建人信息。
     * @param page 分页对象 (ClubVo 泛型)
     * @return 分页社团视图对象列表
     */
    IPage<ClubVo> getAllClubsVo(Page<ClubVo> page);

    /**
     * 根据多个条件模糊查询社团，包含创建人信息。
     * @param page 分页对象 (ClubVo 泛型)
     * @param request 查询请求DTO
     * @return 分页社团视图对象列表
     */
    IPage<ClubVo> searchClubsByConditions(Page<ClubVo> page, ClubSearchRequest request);
}